#region imports

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MimeCloud.AssetManagement.Business.Interface;

#endregion

namespace MimeCloud.AssetManagement.ProviderServices.Data
{
    public interface IAssetReaderFactory
    {
        // Asset
       // IList<IAsset> GetAllAsset ( );
        IAsset GetAssetByID ( int id );
       // IAsset GetAssetByIDLanguageID ( int id, int languageId );

        // AssetContent
      //  IList<IAssetContent> GetAllAssetContent ( );
   //     IAssetContent GetAssetContentByID ( int id );
  //      IList<IAssetContent> GetAssetContentByAssetID ( int assetId );

        // AssetContentMetaData
        //IList<IAssetContentMetaData> GetAllAssetContentMetaData ( );
        //IAssetContentMetaData GetAssetContentMetaDataByID ( int id );
        //IList<IAssetContentMetaData> GetAssetContentMetaDataByAssetContentID ( int assetContentId );

        //// AssetContentRepository
        //IList<IAssetContentRepository> GetAllAssetContentRepository ( );
        //IAssetContentRepository GetAssetContentRepositoryByID ( int id );
        //IList<IAssetContentRepository> GetAssetContentRepositoryByAssetContentID ( int assetContentId );

        // AssetContentType
        IList<IAssetContentType> GetAllAssetContentType ( );
   //     IAssetContentType GetAssetContentTypeByID ( int id );

        //// AssetMetaData
        //IAssetMetaData GetAssetMetaDataByID ( int id );
        //IList<IAssetMetaData> GetAllAssetMetaData ( );
        //IList<IAssetMetaData> GetAssetMetaDataByAssetID ( int assetId );
        //IList<IAssetMetaData> GetAssetMetaDataByAssetIDLanguageID ( int assetId , int languageId );
        //IList<IAssetMetaData> GetAssetMetaDataByAssetIDStatusID ( int assetId , int statusId );

        // AssetRightsUsage
        //IList<IAssetRightsUsage> GetAllAssetRightsUsage ( );
        //IAssetRightsUsage GetAssetRightsUsageByID ( int id );
        //IList<IAssetRightsUsage> GetAssetRightsUsageByAssetID ( int assetId );

        // AssociatedContent
        //IList<IAssociatedContent> GetAllAssociatedContent ( );
        //IAssociatedContent GetAssociatedContentByID ( int id );
        //IList<IAssociatedContent> GetAssociatedContentByAssetID ( int assetId );

        // AssociatedContentType
        //IList<IAssociatedContentType> GetAllAssociatedContentType ( );
        //IAssociatedContentType GetAssociatedContentTypeByID ( int id );

        // Language
        IList<ILanguage> GetAllLanguage ( );
 //       ILanguage GetLanguageByID ( short id );

        // MetaData
        //IMetaData GetMetaDataByID ( int id );
        //IList<IMetaData> GetAllMetaData ( );
        //IList<IMetaData> GetMetaDataByMetaValueLanguageID ( int languageId );
        //IList<IMetaData> GetMetaDataByLanguageID ( int languageId );

        // MetaKey
        IList<IMetaKey> GetAllMetaKey ( );
   //     IMetaKey GetMetaKeyByID ( int id );

        // MetaValue
      //  IList<IMetaValue> GetAllMetaValue ( );
 //       IMetaValue GetMetaValueByID ( int id );

        // MimeType
        IList<IMimeType> GetAllMimeType ( );
        IMimeType GetMimeTypeByID ( int id );

        // RelatedAsset
   //     IList<IRelatedAsset> GetAllRelatedAsset ( );
      //  IRelatedAsset GetRelatedAssetByID ( int id );
    //    IList<IRelatedAsset> GetRelatedAssetByAssetID ( int assetId );

        // Repository
        IList<IRepository> GetAllRepository ( );
        IRepository GetRepositoryByID ( int id );
        
        // Status
        IList<IStatus> GetAllStatus ( );
        IStatus GetStatusByID ( int id );
    }
}
